// 倒序显示文件内容 使用 fseek() 和 ftell() 函数
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main()
{
    /*******************code*******************/
    FILE *fp;
    long count, last;
    // "r 与 rb 的区别 rb 正常输出 r 模式 在输出换行符的时候 会多输出一个换行符"
    /* 
        假如文本文件是：
        123
        456
        我们看二进制文件内容:31 32 33 0D 0A 34 35 36 ==> '1' '2' '3' '\r' '\n' '4' '5' '6'
        使用 r 模式读取到的是 '\n' '\n'
        使用 rb  模式读到的是 '\r' '\n'      
    */

    if ((fp = fopen("test", "rb")) == NULL)
        exit(EXIT_FAILURE);
    rewind(fp);
    char word;
    while ((word = getc(fp)) != EOF)
    {
        putchar(word);
    }
    printf("\n");
    printf("\r");
    fseek(fp, 0, SEEK_END);
    last = ftell(fp);
    for (count = 1; count <= last; count++)
    {
        fseek(fp, -count, SEEK_END);
        word = getc(fp);
        if (word != '\r')
            putchar(word);
    }
    printf("\n");
    rewind(fp);
    char word1[20];
    while (fgets(word1, 19, fp))
        fputs(word1, stdout);

    /******************************************/
    printf("\n\n****************************\n");
    printf("Press Enter key to continue\n");
    getchar();
    return 0;
    /******************************************/
}
